import pygame
import 配置

class 主角类(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.所有加生命图片 = []
        self.加载加生命图片()
        self.所有减生命图片 = []
        self.加载减生命图片()

        大图片 = pygame.image.load(配置.图片路径['主角图片']);
        self.image = pygame.transform.scale(大图片.subsurface((0, 0), (640, 1000)), (64, 100))

        self.图片个数 = 1
        self.rect = self.image.get_rect()
        self.rect.x = 配置.画面大小[0]/2 - 32
        self.rect.bottom = 配置.画面大小[1]
        self.移动速度 = 12
        self.主角宽度 = self.rect.width
        self.主角高度 = self.rect.height
        self.生命条数 = 1
        self.图片状态 = '正常'
        self.非正常图片需显示次数 = 80
        self.非正常图片已显示次数 = 0
        self.isDead = False

    def draw(self,screen):
        if self.图片状态 == '正常':
            screen.blit(self.image,self.rect)
        elif self.图片状态 == '加生命':
            使用图片索引 = self.非正常图片已显示次数 % 2
            screen.blit(self.所有加生命图片[使用图片索引],self.rect)
            self.非正常图片已显示次数 += 1
            if self.非正常图片已显示次数 > self.非正常图片需显示次数:
                self.非正常图片已显示次数 = 0
                self.图片状态 = '正常'
        elif  self.图片状态 == '减生命':
            使用图片索引 = self.非正常图片已显示次数 % 2
            screen.blit(self.所有减生命图片[使用图片索引],self.rect)
            self.非正常图片已显示次数 += 1
            if self.非正常图片已显示次数 > self.非正常图片需显示次数:
                self.非正常图片已显示次数 = 0
                self.图片状态 = '正常'

    def go(self, direction):
        # direction:1 up,2 left,3 right,4 down
        if direction == 1:
            if self.rect.top > 0:
                self.rect.y -= self.移动速度
        elif direction == 2:
            if self.rect.left > 0:
                self.rect.x -= self.移动速度
        elif direction == 3:
            if self.rect.left < 配置.画面大小[0] - self.主角宽度:
                self.rect.x += self.移动速度
        elif direction == 4:
            if self.rect.top < 配置.画面大小[1] - self.主角高度:
                self.rect.y += self.移动速度

    def 加载加生命图片(self):
        大图片 = pygame.image.load(配置.图片路径['主角加生命图片']);
        self.所有加生命图片.append(pygame.transform.scale(大图片.subsurface((0, 0), (640, 1000)), (64, 100)))
        self.所有加生命图片.append(pygame.transform.scale(大图片.subsurface((640, 0), (640, 1000)), (64, 100)))

    def 加载减生命图片(self):
        大图片 = pygame.image.load(配置.图片路径['主角减生命图片']);
        self.所有减生命图片.append(pygame.transform.scale(大图片.subsurface((0, 0), (640, 1000)), (64, 100)))
        self.所有减生命图片.append(pygame.transform.scale(大图片.subsurface((640, 0), (640, 1000)), (64, 100)))
